import re
import os
from paddleocr import PaddleOCR


def extract_coordinates(image_path):
    # 检查文件是否存在
    if not os.path.isfile(image_path):
        raise FileNotFoundError(f"指定的图片文件不存在: {image_path}")

    # 初始化PaddleOCR（中文模型），指定使用 PP-OCRv5_mobile_rec 模型
    ocr = PaddleOCR(
        use_angle_cls=True,
        lang="ch",
        rec_model_dir="/Users/ricochen/.paddlex/official_models/PP-OCRv5_mobile_rec",
    )

    # 读取图片并识别文字，使用 predict 方法替换 ocr.ocr
    result = ocr.predict(image_path)
    all_text = " ".join([line[1][0] for res in result for line in res])
    print(all_text)

    # 正则匹配经纬度（兼容小数点后6位）
    # pattern = r"(\d{2,3}\.\d{6})\d*,\d*(\d{2,3}\.\d{6})"
    # matches = re.search(pattern, all_text)

    # if matches:
    #     lat, lon = matches.groups()
    #     return float(lat), float(lon)
    # else:
    #     raise ValueError("未找到经纬度信息")


# 获取当前脚本所在目录
script_dir = os.path.dirname(os.path.abspath(__file__))
image_path = os.path.join(script_dir, "img2.jpg")  # 拼接图片路径

try:
    latitude, longitude = extract_coordinates(image_path)
    print(f"提取的经纬度：({latitude}, {longitude})")
except FileNotFoundError as e:
    print(e)
except ValueError as e:
    print(e)
